package modulos.pessoa.managedbean;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import modulos.pessoa.dao.PessoaDAO;
import modulos.pessoa.entidade.Contato;
import modulos.pessoa.entidade.Endereco;
import modulos.pessoa.entidade.Pessoa;

@ManagedBean
@SessionScoped
public class ManterPessoa {

	private Pessoa pessoa;
	
	private String mensage;

	public ManterPessoa() {
		pessoa = new Pessoa();
		List<Contato> dadosContato = new ArrayList<Contato>();
		dadosContato.add(new Contato(pessoa));
		pessoa.setDadosContato(dadosContato);
		
		List<Endereco> dadosEndereco= new ArrayList<Endereco>();
		dadosEndereco.add(new Endereco(pessoa));
		pessoa.setDadosEndereco(dadosEndereco);
	}
	
	public String getMensage() {
		return mensage;
	}



	public void setMensage(String mensage) {
		this.mensage = mensage;
	}



	public String getTextoTitulo() {
		
		if(getPessoa() == null ||
				(getPessoa() != null && getPessoa().getId() == null)){
			return "Cadastrar Pessoa";
		}else{
			return "Editar Pessoa";
		}
	}

	
	public Pessoa getPessoa() {
		return pessoa;
	}
	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
	
	public String salvar() {
		PessoaDAO pessoaDAO = new PessoaDAO();
		pessoaDAO.save(getPessoa());
		String mensagem = ResourceBundle.getBundle("bundles.messagens").getString("msg.salva.sucesso");
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensagem, mensagem));
		return "";
	}
	
	public String novoContato() {
		if(pessoa.getDadosContato() == null){
			pessoa.setDadosContato(new ArrayList<Contato>());
		}
		pessoa.getDadosContato().add(new Contato(pessoa));
		
		FacesContext contexto = FacesContext.getCurrentInstance();
		String mensagem = ResourceBundle.getBundle("bundles.messagens").getString("msg.novo");
		contexto.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensagem, ""));
		return "";
	}
	
	public String novoEndereco() {
		if(pessoa.getDadosEndereco() == null){
			pessoa.setDadosEndereco(new ArrayList<Endereco>());
		}
		pessoa.getDadosEndereco().add(new Endereco(pessoa));
		
		return "";
	}
	
	public String editar(){
		Map<String, String> map = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		PessoaDAO pessoaDAO = new PessoaDAO();
		setPessoa((Pessoa)pessoaDAO.recupera(Pessoa.class, new Long(map.get("idPessoa"))));
		return "/pessoa/manterpessoa.jsf?faces-redirect=true";
	}
	
	public String novo() {
		pessoa = new Pessoa();
		List<Contato> dadosContato = new ArrayList<Contato>();
		dadosContato.add(new Contato(pessoa));
		pessoa.setDadosContato(dadosContato);
		
		List<Endereco> dadosEndereco= new ArrayList<Endereco>();
		dadosEndereco.add(new Endereco(pessoa));
		pessoa.setDadosEndereco(dadosEndereco);

		String mensagem = ResourceBundle.getBundle("bundles.messagens").getString("msg.novo");
		FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, mensagem, ""));

		
		return "";
	}
	
	public String pesquisar() {
		return "/pessoa/pesquisarpessoa.jsf?faces-redirect=true";
	}
}
